// https://www.acwing.com/problem/content/844/

#include <iostream>
#include <vector>

using namespace std;

// 这个题目与力扣中 46. 全排列 的最大不同是 "按字典序输出所有排列方案"
int n;
int values[10];
int visited[10];

void printVector() {
    for (int i=1; i <= n; i++) {
        cout<<values[i]<<" ";
    }
    cout<<endl;
}

void dfs(int start) {
    if (start == n + 1) {
        printVector();
        return;
    }

    for (int i=1; i<=n; i++) {
        if (!visited[i]) {
            values[start] = i;
            visited[values[start]] = 1;         // 使用过的数字标记一下
            dfs(start+1);
            visited[values[start]] = 0;
        }
    }
}

int main() {
    scanf("%d", &n);
    dfs(1);
    return 0;
}
